package stringtools;
/**
 * 2023/07/11 - The String tool class I first wrote mainly covers the constants
 * and common operations of String.
 *
 * @author Zwb
 * @version v1.0.0
 */

public class StringUtils {
    /**
     *常量区
     */
    // 表示一个没有任何字符的字符串
    public static final String EMPTY = "";
    // 表示一个包含一个空格字符的字符串
    public static final String SPACE = " ";
    // 表示系统的换行符
    public static final String NEW_LINE = System.lineSeparator();
    // 表示一个制表符字符
    public static final String TAB = "\t";
    // 表示字符串"null"，有时候在处理null值时可能会用到
    public static final String NULL = "null";
    // 表示一个逗号字符，常用在字符串分割或连接时
    public static final String COMMA = ",";
    // 表示一个点字符，常用在处理文件扩展名或域名时
    public static final String DOT = ".";
    /**
     *方法区
     */
    public static int stringLength(String context){
        return context.length();
    }
    /**
     * 连接给定的字符串。
     *
     * <p>'strings'的数据类型是'String[]'，也就是字符串数组。在Java中，用'...'声明的参数被称为可变参数，
     * 它是一个简单的集合，包含零个或多个同类型的元素。在函数内部，这些参数实际上被当作数组处理，所以
     * 你可以用增强的for循环（或者称为"for-each"循环）来遍历'strings'，如'for (String str : strings)'。
     *
     * <p>在Java中，'String'对象是不可变的，这意味着一旦创建了'String'对象，其内容就不能改变。如果你用
     * '+'操作符来连接字符串，Java实际上会在每次操作时创建一个新的'String'对象，这可能会导致大量的临时
     * 对象，影响性能。然而，'StringBuilder'是一个可变对象，它内部有一个'char'数组来储存字符串，当你调
     * 用'append'方法时，它会直接在数组的末尾添加字符，而不需要创建新的对象。因此，处理字符串连接操作
     * 时，它通常比'+'操作符更高效。
     *
     * @param strings 要连接的字符串
     * @return 连接后的字符串
     */
    public static String concatenateStrings(String... strings) {
        StringBuilder sb = new StringBuilder();
        for (String str : strings) {
            sb.append(str);
        }
        return sb.toString();
    }

}
